﻿#ifndef ProtocolProcess_H
#define ProtocolProcess_H


#include <QString>
#include <QXmlStreamReader>
#include <QXmlStreamAttributes>
#include <QFile>
#include <QTreeWidgetItem>
#include <QTreeWidget>
#include <target.h>
#include <QDebug>
#include <QMessageBox>
#include <general.h>
#include <cglobals.h>

//#pragma execution_character_set("utf-8")


//显示格式类
class ProtocolProcess : public QObject
{
    Q_OBJECT
public:
    explicit ProtocolProcess(QObject *parent = nullptr);
    ProtocolProcess(QString file);
    ProtocolProcess(ProtocolProcess& format);
    ~ProtocolProcess();
    bool readProtocol(QString file);
    void parseCheck_Infos();                                                            // 解析Check_Infos标签
    void parseBody();                                                                   // 解析Body标签
    void parseEnumerated(struct _enumerated* pEnumerated);                              // 解析Enumerated标签
    void parseValue(struct _value* pValue);                                             // 解析Value标签
    void parseFrame();                                                                  // 解析Frame标签
    void parseField(struct _field* pField);                                             // 解析Field标签
    void parseComputation(struct _computation* pComputation);                           // 解析Computation标签
    void parseDisplay(struct _display* pDisplay);                                       // 解析Display标签
    void parsePosition(struct _position* pPosition);                                    // 解析Page标签
    void parseRange(struct _range* pRange);                                             // 解析Graph标签
    struct _format_settings* getFormat_Settings();                                      // 获取Format_Settings属性
    QXmlStreamReader* getReader();
    void setXmlFilePath(QString filePath);
    QString* getXmlFilePath();
    void deleteFormatSetting();
    void clearXmlFilePath();

signals:
    void throwError(QString error);


private:
    QXmlStreamReader* pReader = NULL;                                                   // xml文件读取对象
    struct _format_settings* pFormat_Settings = NULL;                                   // 显示格式结构体
    QString* pXmlFilePath = NULL;                                                       // xml文件路径
};

#endif // ProtocolProcess_H
